/*
 * 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
 * 
 * 欢迎到知启蒙网站（https://www.zhiqim.com）购买正版软件，知启蒙还提供许多开源框架和软件。
 * 
 * 1、本软件产品所有源代码受《中华人民共和国著作权法》和其他有关法律、法规的保护，其所有知识产权归湖南知启蒙科技有限公司所有；
 * 2、禁止复制和修改。不得复制修改、翻译或改编本软件所有源代码，或者基于本软件产品创作衍生作品；
 * 3、禁止进行逆向工程。不得对本软件的源代码进行逆向工程、反编译或试图以其他方式发现软件的源代码；
 * 4、个别授权：如需进行商业性的销售、复制、分发，包括但不限于软件销售、预装、捆绑等，必须获得知启蒙的书面授权和许可；
 * 5、保留权利：本注释未明示授权的其他一切权利仍归知启蒙所有，任何人使用其他权利时必须获得知启蒙的书面同意。
*/
package net.redxyz.repost.resource.interceptor;

import java.sql.SQLException;

import net.redxyz.repost.resource.SessionUser;
import net.redxyz.repost.service.dao.SysParamDao;
import net.redxyz.top.TaobaoService;

import org.zhiqim.httpd.HttpRequest;
import org.zhiqim.httpd.HttpdConstants;
import org.zhiqim.httpd.context.core.Interceptor;
import org.zhiqim.kernel.Global;
import org.zhiqim.orm.ORMException;

/**
 * 用户登录拦截器
 * 1.升级时返回升级页
 * 2.用户未登录，返回淘宝授权页
 * 3.用户已登录，把顶部通知加到请求中
 *
 * @version v1.0.0 @author zouzhigang 2014-3-21 新建与整理
 */
public class ChkLoginInterceptor implements Interceptor, HttpdConstants
{
    public void intercept(HttpRequest request) throws Exception
    {
        //1.检查是不是在升级
        if (Global.isTrue("project", "upgrade"))
        {
            request.setRedirectTop("/upgrade.htm");
            return;
        }
        
        //2.检查是不是已登录
        SessionUser sessionUser = request.getSessionUser(SessionUser.class);
        if (sessionUser == null)
        {
            request.setRedirectTop(TaobaoService.getAccreditUrl());
            return;
        }
        
        //3.把版本广告和顶部通知内容放到请求中
        request.setAttribute("ads", getPortalAds(sessionUser.getVersionNo()));
        
        request.setAttribute("lineNum", SysParamDao.getInt("portal.notice", "lineNum"));
        request.setAttribute("url", SysParamDao.getString("portal.notice", "url"));
        request.setAttribute("title", SysParamDao.getString("portal.notice", "title"));
        request.setAttribute("target", SysParamDao.getString("portal.notice", "target"));
        request.setAttribute("allowClose", SysParamDao.isTrue("portal.notice", "allowClose"));
    }
    
    /** 根据版本取广告 
     * @throws SQLException 
     * @throws ORMException */
    public static String getPortalAds(int versionNo) throws ORMException, SQLException
    {
        if (versionNo <= 1)
            return SysParamDao.getString("portal.ads", "1");
        else if (versionNo > 1 && versionNo < 8)
            return SysParamDao.getString("portal.ads", "5");
        else
            return SysParamDao.getString("portal.ads", "8");
    }
}
